Aprenda cómo integrar WebGL en un juego usando herramientas del Sequence Stack para ganar logros y usar ERC1155 personalizados.
three
, todos compilados usando webpack
Plantilla WebGL JS Web SDK Starter
Clona el repositorio anterior y accede a él con cd template-webgl-js-sequence-kit-starter
.
.env
.env
(usando el .env.example
) con las variables de entorno
App.jsx
src
llamada react
y cree 2 archivos: App.jsx
y Login.jsx
En App.jsx
incluya el siguiente código
Login.jsx
agregue el siguiente código para crear un botón en la parte superior de la pantalla para iniciar sesión en la aplicación
index.js
index.js
importe el componente App.jsx
y renderícelo para que se agregue al elemento con id root
en index.html
Login.jsx
index.js
index.html
Minter Role
Permitiremos que existan múltiples caminos para mintear coleccionables: un coleccionable de avión y un coleccionable de logro.
Esto se logra en el código agregando una clave/valor isPlane
al cuerpo de la solicitud normal de cloudflare, y creando un if/else
adicional en el cloudflare worker.
Puede ver el código para esto en este repositorio de github
Para esta guía, ejecutaremos todo el código de cloudflare en un entorno de desarrollo local, esto se puede hacer iniciando el cloudflare worker en la carpeta del proyecto, así:
index.js
incluimos un botón conectado al atributo onclick
del elemento en index.html
callContract
se encarga del minteo llamando a un fetch que está envuelto en un mutex para asegurar que solo ocurra un minteo a la vez, evitando clics repetidos, y se agrega a la clase SequenceController
en /API/SequenceController.js
fetchPlaneTokens
hará polling del resultado hasta que haya un activo en su wallet, actualizando el plane color
para representar un avión diferente.
fetchPlaneTokens
se implementa con el siguiente código, donde la condición de balance es mayor que 1, y el tokenID
es igual al id buscado.
Esta lógica condicional de la UI cambiaría según su aplicación
burn achievement
, dependiendo de si el usuario tiene un logro o no
Primero, implementar la lógica de manejador de clic HTML/JS similar a la anterior
donde esta vez, el valor isPlane
de callContract
se establece en false
fetchTokensFromAchievementMint
que se agrega al SequenceController
display
haga aparecer el botón
msg.sender
en el contrato sea una de las direcciones del relayer
), para esto, queremos asegurarnos de que el msg.sender
en el contrato demuestre la propiedad del token y que la transacción sea enviada directamente por el usuario. Usaremos funciones frontend de wagmi
y algo de composición de clases para lograrlo.
burnToken
es una función pasada desde nuestro componente react que usa un patrón similar de mutexes, y enviamos la transacción usando sendTransaction
del paquete wagmi
, esperando la actualización del hash de la transacción para devolver el callback
SequenceController
, llamamos a la función sendBurnToken
envuelta en burnToken
para hacer que la función de react sea accesible para el resto de la aplicación
SequenceController
wagmi
, ya que la entrega de tokens de logro y el minteo de coleccionables se completan usando un Cloudflare Worker para transacciones sin gas.
Esto se puede lograr agregando algunas variables de entorno y cambiando el tipo de conector que usamos.
Primero actualice su archivo .env
con los siguientes secretos de entorno
App.jsx